package com.casic.modules.sys.service;



import com.casic.common.base.entity.PageEntity;
import com.casic.common.utils.ExpandHashMap;
import com.casic.modules.sys.entity.SysUserEntity;

import java.util.List;
import java.util.Map;


/**
 * 系统用户
 * 
 * @author chenshun
 * @email sunlightcs@gmail.com
 * @date 2016年9月18日 上午9:43:39
 */
public interface SysUserService {

	/**
	 * 查询用户的所有权限
	 * @param userId  用户ID
	 */
	List<String> queryAllPerms(String userId);
	
	/**
	 * 查询用户的所有菜单ID
	 */
	List<String> queryAllMenuId(String userId);

	/**
	 * 根据用户名，查询系统用户
	 */
	SysUserEntity queryByUserName(String username);
	
	/**
	 * 根据用户ID，查询用户
	 * @param userId
	 * @return
	 */
	SysUserEntity queryObject(String userId);
	
	/**
	 * 查询用户列表
	 */
	List<SysUserEntity> queryList(Map<String, Object> map);
	
	/**
	 * 查询总数
	 */
	int queryTotal(Map<String, Object> map);
	
	/**
	 * 保存用户
	 */
	void save(SysUserEntity user);
	
	/**
	 * 修改用户
	 */
	void update(SysUserEntity user);
	
	/**
	 * 删除用户
	 */
	void deleteBatch(String[] userIds);
	
	/**
	 * 修改密码
	 * @param userId       用户ID
	 * @param password     原密码
	 * @param newPassword  新密码
	 */
	int updatePassword(String userId, String password, String newPassword);
	/**
	 *  按照部门id查询用户
	 * @param deptId
	 * @return
	 */
	List<SysUserEntity> findByDeptId(String deptId);


	/**
	 * 按照条件查询数据
	 * @param params
	 * @return
	 */
	PageEntity<SysUserEntity> findListParams(Map<String, Object> params);

	/**
	 * 根据用户名查询活跃用户
	 * @param username
	 * @return
	 */
	SysUserEntity queryActiveByUserName(String username);

	/**
	 * 更新最新登录时间
	 * @param user
	 */
	void updateLastLoginTime(SysUserEntity user);

	/**
	 * 根据用户名查询角色ID集合
	 * @param username 用户名
	 * @return 角色ID集合
	 */
	List<String> queryRoles(String username);
}
